﻿using BAL;
using DAL.DataTransferObject;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Module.QLHangHoa;

namespace Module.QLHangHoa
{
    public partial class frmQLHangHoa : Form
    {
        public HangHoaBAO hhBAO = new HangHoaBAO();
        public frmQLHangHoa()
        {
            InitializeComponent();
        }

        private void frmQLHangHoa_Load(object sender, EventArgs e)
        {          
            loadData();
            DGV1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            bt_update.Enabled = false;
            btDelete.Enabled = false;          
        }

        public void loadData()
        {
            List<HangHoa> listHH = hhBAO.HangHoa_GetData();
            Console.WriteLine(listHH.Count);
            DGV1.DataSource = listHH;
            for (int i = 0; i < listHH.Count; i++)
            {
                DGV1.Rows[i].Cells[0].Value = (i+1);
            }            
        }

        private void bt_addNew_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtMH.Text.Length == 0) throw new Exception("Mã hàng không được bỏ trống"); txtMH.Focus();
                if (txtTenHang.Text.Length == 0) throw new Exception("Mã hàng không được bỏ trống"); txtMH.Focus();
                if (txtMNPP.Text.Length == 0) throw new Exception("Mã hàng không được bỏ trống"); txtMH.Focus();
                if (Convert.ToInt32(txtSL.Text) == 0 || txtSLDG.Text.Length == 0) throw new Exception("SỐ lượng hàng phải lớn hơn 0"); txtMH.Focus();
                if (Convert.ToInt32(txtGG.Text) == 0 || txtSLDG.Text.Length == 0) throw new Exception("Giá gốc phải lớn hơn 0 "); txtMH.Focus();
                if (Convert.ToInt32(txtSLDG.Text) == 0 || txtSLDG.Text.Length == 0) throw new Exception("Số lượng đóng gói lớn hơn 1"); txtMH.Focus();
                if (txtTNSX.Text.Length == 0) throw new Exception("Tên nhà sản xuất hàng không được bỏ trống"); txtTNSX.Focus();
                if (txtXX.Text.Length == 0) throw new Exception("Xuất xứ không được bỏ trống"); txtXX.Focus();
                if (txtKC.Text.Length == 0) throw new Exception("Kho chứa hàng không được bỏ trống"); txtKC.Focus();
                if (dtNSX.Value > dtHSD.Value) throw new Exception("Ngày sản xuất phải trước hạn sử dụng"); dtNSX.Focus();
                if (hhBAO.HangHoa_CheckId(txtMH.Text))
                    throw new Exception("Trùng mã hàng !");
                HangHoa hh = new HangHoa();
                getInfo(hh);
                hhBAO.HangHoa_AddNew(hh);
                loadData();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "ERROR");
            }
        }
        public void getInfo(HangHoa hh)
        {
            hh.maHang = txtMH.Text;
            hh.tenHang = txtTenHang.Text;
            hh.donVi = txtDV.Text;
            hh.maNPP = txtMNPP.Text;
            hh.soLuong = Convert.ToInt32(txtSL.Text);
            hh.giaGoc = Convert.ToInt32(txtGG.Text);
            hh.giaDongGoi = Convert.ToInt32(txtGDG.Text);
            hh.soLuongDongGoi = Convert.ToInt32(txtSLDG.Text);
            hh.VAT = Convert.ToInt32(txtVAT.Text);
            hh.tenNSX = txtTNSX.Text;
            hh.ngaySX = dtNSX.Value;
            hh.hanSD = dtHSD.Value;
            hh.ghiChu = txtGG.Text;
            hh.xuatXu = txtXX.Text;
            hh.khoChua = txtKC.Text;
            hh.loaiHang = txtLH.Text;

        }

        private void DGV_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            txtMH.Text = Convert.ToString(DGV1.CurrentRow.Cells[1].Value);
            txtTenHang.Text = Convert.ToString(DGV1.CurrentRow.Cells[2].Value);
            txtDV.Text = Convert.ToString(DGV1.CurrentRow.Cells[3].Value); ;
            txtMNPP.Text = Convert.ToString(DGV1.CurrentRow.Cells[4].Value);
            txtSL.Text = Convert.ToString(DGV1.CurrentRow.Cells[5].Value); ;
            txtGG.Text = Convert.ToString(DGV1.CurrentRow.Cells[6].Value);
            txtSLDG.Text = Convert.ToString(DGV1.CurrentRow.Cells[7].Value);
            txtGDG.Text = Convert.ToString(DGV1.CurrentRow.Cells[8].Value);
            txtVAT.Text = Convert.ToString(DGV1.CurrentRow.Cells[9].Value);
            txtTNSX.Text = Convert.ToString(DGV1.CurrentRow.Cells[10].Value);
            dtNSX.Value = Convert.ToDateTime(DGV1.CurrentRow.Cells[11].Value);
            dtHSD.Value = Convert.ToDateTime(DGV1.CurrentRow.Cells[12].Value);
            txtGhiChu.Text = Convert.ToString(DGV1.CurrentRow.Cells[13].Value);
            txtXX.Text = Convert.ToString(DGV1.CurrentRow.Cells[14].Value);
            txtLH.Text = Convert.ToString(DGV1.CurrentRow.Cells[15].Value);
            txtKC.Text = Convert.ToString(DGV1.CurrentRow.Cells[16].Value);
            bt_addNew.Enabled = false;
            txtsearch.Enabled = false;
            btsearch.Enabled = false;
            txtMH.Enabled = false;
            txtTenHang.Enabled = false;
            txtDV.Enabled = false;
            txtMNPP.Enabled = false;
            txtTNSX.Enabled = false;
            dtHSD.Enabled = false;
            dtNSX.Enabled = false;
            txtXX.Enabled = false;
            txtLH.Enabled = false;
            txtSLDG.Enabled = false;
            bt_update.Enabled = true;
            btDelete.Enabled = true;

        }

        private void bt_update_Click(object sender, EventArgs e)
        {
            HangHoa hh = new HangHoa();
            getInfo(hh);
            hhBAO.HangHoa_Update(hh);
            loadData();
            reset();
        }

        private void btDelete_Click(object sender, EventArgs e)
        {
            HangHoa hh = new HangHoa();
            getInfo(hh);
            hhBAO.HangHoa_Delete(hh);
            loadData();
            reset();
        }

        public void reset()
        {
            
            txtMH.Clear();
            txtTenHang.Clear();
            txtDV.Clear();
            txtMNPP.Clear();
            txtSL.Clear();
            txtGG.Clear();
            txtSLDG.Clear();
            txtGDG.Clear();
            txtVAT.Clear();
            txtTNSX.Clear();
            dtNSX.Value = DateTime.Now;
            dtHSD.Value = DateTime.Now;
            txtGhiChu.Clear();
            txtXX.Clear();
            txtLH.Clear();
            txtKC.Clear();

            bt_addNew.Enabled = true;
            txtsearch.Enabled = true;
            btsearch.Enabled = true;
            txtMH.Enabled = true;
            txtTenHang.Enabled = true;
            txtDV.Enabled = true;
            txtMNPP.Enabled = true;
            txtTNSX.Enabled = true;
            dtHSD.Enabled = true;
            dtNSX.Enabled = true;
            txtXX.Enabled = true;
            txtLH.Enabled = true;
            txtSLDG.Enabled = true;
            btExp.Enabled = true;

        }

        private void btReset_Click(object sender, EventArgs e)
        {
            reset();
            loadData();
            Console.WriteLine("aaaa");
        }

        private void txtsearch_Click(object sender, EventArgs e)
        {
            bt_addNew.Enabled = false;
            txtMH.Enabled = false;
            btExp.Enabled = false;
            txtTenHang.Enabled = false;
            txtDV.Enabled = false;
            txtMNPP.Enabled = false;
            txtTNSX.Enabled = false;
            dtHSD.Enabled = false;
            dtNSX.Enabled = false;
            txtXX.Enabled = false;
            txtLH.Enabled = false;
            txtSLDG.Enabled = false;
        }

        private void btsearch_Click(object sender, EventArgs e)
        {
            List<HangHoa> listHH = hhBAO.HangHoa_SearchName(txtsearch.Text);
            if (listHH.Count == 0)
            {
                MessageBox.Show("Không tồn tại mặt hàng này", "ERROR");
                reset();
            }
            else
            {
                DGV1.DataSource = listHH;
                for (int i = 0; i < DGV1.Rows.Count; i++)
                {
                    DGV1.Rows[i].Cells[0].Value = (i + 1);

                }
            }
        }

        private void btExp_Click(object sender, EventArgs e)
        {
            List<HangHoa> listHH = hhBAO.HangHoa_CheckExp();
            if (listHH.Count == 0)
            {
                MessageBox.Show("Không có mặt hàng nào hết hạn", "ERROR");
                reset();
            }
            else
            {
                DGV1.DataSource = listHH;
                for (int i = 0; i < DGV1.Rows.Count; i++)
                {
                    DGV1.Rows[i].Cells[0].Value = (i + 1);

                }
            }
        }




    }
}
